home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / flying-6.11 / bugs.h < prev    next >
C/C++ Source or Header  |  1995-06-29  |  4KB  |  125 lines

  1. #ifdef _bugs_h
  2.  
  3. Gefundene Fehler und Besonderheiten bei verschiedenen Compilern
  4.  
  5.  
  6. BORLANDC
  7. ========
  8.  
  9. -  RealZero als Define (aus real.h) fⁿhrt wΣhrend der ▄bersetzung von Vec3.C
  10.     zum Absturz des Compilers.
  11.  
  12. => Statt Define mu▀ Real-Konstante verwendet werden.
  13.  
  14.  
  15. -  Es gibt Schwierigkeiten bei der Typdeklaration folgender
  16.     (klassenspezifischer) Typen der Klassen Object und DynObj wegen
  17.     der gleichen Namen.
  18.  
  19.     typedef void (Object::*ObjFun)();
  20.     typedef void (DynObj::*ObjFun)();
  21.  
  22. => Unterscheidung durch eindeutige Namen  DynObj::*ObjFun -> DynObj::*DynObjFun
  23.  
  24.  
  25. -  Die Kombination friend inline fⁿhrt in vec2.h und vec3.h zu Problemen.
  26.  
  27. => Da Alternativen von gcc angemeckert werden, wird eine Unterscheidung
  28.    ⁿber Schalter eingebaut.
  29.  
  30.  
  31.  
  32. TURBOC
  33. ======
  34.  
  35. - findet Fehler in DOSPBALL.H. Im Konstruktor fehlte die Initialisierung der
  36.   display-Variable. -> eigentlich Fehler von BORLANDC
  37.  
  38.  
  39.  
  40. HP-CC
  41. =====
  42. -  kann Real als Klasse (Schalter REAL_IS_CLASS in global.h) nicht ⁿbersetzen,
  43.     da bei einigen Operatoren scheinbar Mehrdeutigkeiten auftreten. Die 
  44.    Mehrdeutigkeit entsteht bei Verwendung von Real und Integers in einem
  45.    Ausdruck, da der Compiler dann nicht mehr zwischen Real/Real- und
  46.    double/double-Operator entscheiden kann.
  47.  
  48. => alle (absolut alle!) Kombinationen von Real- und int-Typen in Ausdruecken
  49.    muessen explizit den int in einen Real casten !
  50.  
  51.  
  52.  
  53. -  purify meldet beim Matrizentest-Programm folgende Meldung:
  54.  
  55. |  ****  Purify'd check  (pid 29719)  ****
  56. |  Purify (umr): uninitialized memory read:
  57. |    * This is occurring while in:
  58. |      operator/(const Vector&,const Matrix&) [line 211, matrix.C, pc=0x28f44]
  59. |      main         [line 26, matrix_x.C, pc=0x2d6d8]
  60. |      _start       [libc.sl, pc=0x817ef04c]
  61. |      $START$      [check, pc=0x5740]
  62. |    * Reading 4 bytes from 0x7b033630 on stack (2 bytes at 0x7b033632 uninit).
  63. |    * This is local variable "x" in function main.
  64. |  
  65. |                           Chunks      Bytes
  66. |                Leaked          0          0
  67. |    Potentially Leaked          0          0
  68. |                In-Use          7       4064
  69. |    ----------------------------------------
  70. |       Total Allocated          7       4064
  71. |
  72.  
  73. => ignorieren
  74.  
  75.  
  76.  
  77. GNU-CC
  78. ======
  79. -  Version 2.5.7 kann in der double-Version von Real den impliziten Cast von
  80.    Integer-Konstanten nach const Real& nicht korrekt durchfⁿhren.
  81.  
  82.     der Fehler fⁿhrt zum Laufzeitabsturz !!!
  83.  
  84. => Alle Integer-Konstanten, die als Real verwendet werden, mⁿssen vorsorglich
  85.     explizit als double in der Source auftauchen.
  86.  
  87.  
  88. -  In xmover.C gibt es Schwierigkeiten bei der Macro-Ersetzung von 
  89.     YADDOP zu + in der Zeile  c YADDOP= dy_c (also: c += dy_c)
  90.  
  91. => c YADDOP dy_c verwenden und direkt += zuordnen
  92.  
  93.  
  94. -  Version 2.6.0 hat Probleme mit dem Default-Copy-Konstruktor der
  95.    Carrom-Klasse. Der Fehler tritt bei gleichzeitiger Verwendung eines
  96.    mehrdimensionalen Arrays und eines einzelnen Objekts (im Beispiel Vec2)
  97.    auf
  98.  
  99. => Copy-Konstruktor wird explizit als dummy definiert
  100.  
  101.  
  102. -  Real (*this) wird als konstant angenommen in
  103.    inline Real Real::operator*( const Real &z ) const
  104.         { return (*this)*=z; }
  105.  
  106. => Konstrukt variiert:
  107.  
  108.    inline Real Real::operator*( const Real &z ) const
  109.         { Real erg(*this); erg*=z; return erg; }
  110.  
  111.  
  112. -  Version 2.4 hat Probleme mit dem protected member id der Klasse Object.
  113.    Die public abgeleitete Klasse goal kann darauf nicht zugreifen.
  114.  
  115. => id wird zum public member gemacht.
  116.  
  117.  
  118. allgemein
  119. =========
  120. -  Vector( int n, double, ... ); funktioniert nicht
  121.  
  122. => ausgetauscht in Vector( int n, double d ), analog fuer Matrizen
  123.  
  124. #endif
  125.